مقدمة حول مفهوم دوال الكثافة الاحتمالية
تُعَدّ دوال الكثافة الاحتمالية (Probability Density Functions – PDF) حجر الزاوية في علم الإحصاء والاحتمالات. فهي تصف كيفية توزّع القيم العشوائية المستمرة، وتساعد على استنتاج الخصائص الأساسية للبيانات، من متوسط وتباين واحتمالات وقوع الأحداث ضمن نطاقات محدَّدة. في بيئة بايثون، برزت مكتبات مثل NumPy و SciPy و pandas و Matplotlib لتُسهِّل نمذجة هذه الدوال وتمثيلها رسوميًّا ومعالجتها عدديًّا بكفاءة عالية. سيستعرض هذا المقال، بصورة موسَّعة ومفصَّلة، كل ما يحتاجه المبرمج أو الباحث لإتقان العمل مع دوال الكثافة الاحتمالية في بايثون، انطلاقًا من المبادئ النظرية ووصولًا إلى التطبيقات العملية، مرورًا بخوارزميات التقدير والمحاكاة والتحقّق الإحصائي.
1. الأساس الرياضي لدوال الكثافة الاحتمالية
1‑1. المتغير العشوائي المستمر
المتغير العشوائي المستمر X هو دالة تُسند لكل مخرَج في فضاء العينة عددًا حقيقيًّا، بحيث يمكنه أخذ أي قيمة في مجال متصل. يشترط أن تكون دالة الكثافة الاحتمالية fX(x) غير سالبة، وتحقّق التكامل:
∫−∞∞fX(x)dx=1.
1‑2. العلاقة مع دالة التوزيع التراكمي
دالة التوزيع التراكمي (CDF) تُعرَّف بـ
FX(x)=Pr(X≤x)=∫−∞xfX(t)dt.
باشتقاق FX نحصل على PDF:
fX(x)=dxdFX(x).
1‑3. اللحظات الإحصائية
-
المتوسط الرياضي: μ=E[X]=∫−∞∞xfX(x)dx.
-
التباين: σ2=Var[X]=∫(x−μ)2fX(x)dx.
2. البنية البرمجية في بايثون لمعالجة PDF
| المكتبة | الدور الرئيس | مميزات أساسية |
|---|---|---|
| NumPy | إنشاء بيانات عددية، توليد عينات عشوائية | كفاءة عالية في العمليات المتجهية |
| SciPy.stats | دوال PDF/CDF جاهزة، تقدير المعلمات | أكثر من 100 توزيع مستمر ومنفصل |
| pandas | تحليل بيانات جدوليّة | تكامل مع NumPy وسهولة معالجة السلاسل |
| Matplotlib / Seaborn | التصوير البياني | الرسم ثنائي وثلاثي الأبعاد |
3. توليد البيانات العشوائية وتقدير الكثافة
3‑1. عينات من توزيعات معروفة
pythonimport numpy as np
from scipy import stats
np.random.seed(0)
sample = stats.norm.rvs(loc=0, scale=1, size=10_000) # عيّنة من التوزيع الطبيعي
3‑2. التقدير البارامتري للمعلمات
pythonmu_hat, sigma_hat = stats.norm.fit(sample)
ترجع fit تقديرَي الوسط والانحراف المعياري بالحد الأقصى للاحتمالية (MLE).
3‑3. التقدير غير البارامتري (KDE)
تقدير كثافة النواة (Kernel Density Estimation) يتيح الحصول على تقريب سلس لكثافة مجهولة الشكل.
pythonkde = stats.gaussian_kde(sample, bw_method='scott')
density = kde(np.linspace(-4, 4, 1000))
4. تمثيل دوال الكثافة رسوميًّا
pythonimport matplotlib.pyplot as plt
x = np.linspace(-4, 4, 1000)
plt.plot(x, stats.norm.pdf(x, mu_hat, sigma_hat), label='PDF نظرية')
plt.plot(x, kde(x), linestyle='--', label='KDE')
plt.hist(sample, bins=50, density=True, alpha=0.3, label='هيستوغرام')
plt.legend(); plt.xlabel('x'); plt.ylabel('الكثافة'); plt.title('تمثيل كثافة التوزيع الطبيعي')
plt.show()
5. تصميم خوارزميات مخصَّصة لدوال كثافة معقَّدة
5‑1. دوال كُسرية (فركتلية)
في بعض تطبيقات الفيزياء الإحصائية، نحتاج إلى نماذج كثافة لا تتبع التوزيعات الكلاسيكية. يمكن استخدام السلاسل الأسية أو دوال Weibull المُعدَّلة لصياغة هذه الكثافات.
5‑2. دمج توزيعات (Mixture Models)
يُشكِّل مزيج Gaussians مثالًا شائعًا لنمذجة الكثافات متعددة القمم:
pythonfrom sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=3).fit(sample.reshape(-1,1))
6. فحص جودة الملاءمة
6‑1. اختبار كولموغوروف‑سميرنوف
pythonstat, p = stats.kstest(sample, 'norm', args=(mu_hat, sigma_hat))
قيمة p-value تقيس توافق العيّنة مع التوزيع المفترض.
6‑2. مخطط Q‑Q
pythonimport statsmodels.api as sm
sm.qqplot(sample, line='s'); plt.title('Q‑Q Plot'); plt.show()
7. التطبيقات العملية لدوال الكثافة في بايثون
7‑1. النمذجة المالية
توزيع العوائد اليومية للأسهم غالبًا ما يُظهِر ذيولًا أثقل من الطبيعي؛ يُستخدم توزيع Student‑t أو مزيج Gaussians لتمثيله.
7‑2. معالجة الإشارات الحيوية
في تحليل نبضات القلب (ECG)، يساعد تقدير PDF على رصد الانحرافات عن الإيقاع الطبيعي.
7‑3. الذكاء الاصطناعي والتعلّم العميق
تنتشر طبقات Variational Autoencoders في ترميز الكثافات الاحتمالية ضمن فضاءات كامنة منخفضة الأبعاد.
8. التحسين والأداء
-
المتجهة مقابل الحلقة: استخدم عمليات NumPy المتجهة لتقليل زمن التنفيذ.
-
التوازي: استعن بمكتبة joblib أو multiprocessing لتسريع حساب KDE في البيانات الكبيرة.
-
الذاكرة: حمّل البيانات على دفعات chunks في pandas عند العمل مع ملفات ضخمة.
9. اعتبارات SEO لبرمجة PDF في بايثون
-
دمج كلمات مفتاحية مثل Probability Density Function، Kernel Density Estimation، SciPy stats، Gaussian PDF in Python.
-
استعمال ترويسات H2/H3 واضحة تصف التقنيات والأكواد.
-
تضمين كود قابل للنسخ يزيد من مدة بقاء القارئ في الصفحة ويعزّز ترتيب البحث.
خاتمة
إتقان العمل مع دوال الكثافة الاحتمالية في بايثون يفتح الباب أمام طيف واسع من التطبيقات البحثية والصناعية، من النمذجة المالية إلى الهندسة الحيوية والذكاء الاصطناعي. إن الجمع بين الأساس الرياضي المتين وأدوات بايثون القوية يمنح الباحث مرونة عالية في توصيف البيانات وتحليلها وصنع قرارات مبنية على أدلةٍ كمية صلبة.
المراجع
-
Virtanen, P. et al. SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python. Nature Methods, 2020.
-
Harris, C. R. et al. Array programming with NumPy. Nature, 2020.

